/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.pa165.portalnahouby.implementation.daointerface;

import cz.muni.fi.pa165.portalnahouby.implementation.entity.Forest;
import java.util.List;

/**
 * Interface for DAO object for forest
 * 
 * @author Tomáš Čejka
 */
public interface ForestDAO {
    
    /**
     * Adds new forest
     *
     * @param forest new forest
     *
     * @throws IllegalArgumentException thrown if id of forest is not null
     */
    public void addForest(Forest forest);
    
    /**
     * Updates forest in database
     *
     * @param forest forest to be updated
     * @throws IllegalArgumentException thrown if forest is null or its id is null
     *
     */
    public void editForest(Forest forest);
    
    /**
     * Deletes forest with specified id
     *
     * @param id id of forest to be deleted
     *
     * @throws IllegalArgumentException thrown if id of forest is null
     */
    public void deleteForest(Long id);
    
    /**
     * Finds forest with specified id
     *
     * @param id id of forest to be found
     * @return Found forest
     * 
     * @throws IllegalArgumentException thrown if id of forest is null
     */
    public Forest findForest(Long id);
    
    /**
     * Gets all forests
     *
     * @return List of forests
     */
    public List<Forest> getAllForests();

}
